package cn.edu.sgu.www.mhxysy.service.qiling;

import cn.edu.sgu.www.mhxysy.vo.Imager;
import cn.edu.sgu.www.mhxysy.pager.Pager;
import cn.edu.sgu.www.mhxysy.dto.qiling.QilingDTO;
import cn.edu.sgu.www.mhxysy.entity.qiling.Qiling;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * @author 沐雨橙风ιε
 * @version 1.0
 */
public interface QilingService {

	/**
	 * 计算器灵评分
	 * @param qilingId 器灵ID
	 */
	void compute(String qilingId);

	/**
	 * 器灵镶嵌
	 * @param qilingId 器灵ID
	 * @param equipmentId 装备ID
	 * @return String 器灵操作：镶嵌、取下
	 */
	String inlay(String qilingId, String equipmentId);

	/**
	 * 添加器灵
	 * @param qilingDTO 器灵信息
	 */
	void insert(QilingDTO qilingDTO);

	/**
	 * 通过ID删除器灵
	 * @param id 器灵ID
	 */
	@Transactional(rollbackFor = Exception.class)
	void deleteById(String id);

	/**
	 * 通过ID修改器灵信息
	 * @param qilingDTO 器灵信息
	 */
	void updateById(QilingDTO qilingDTO);

	/**
	 * 通过ID查询器灵信息
	 * @param id 器灵ID
	 * @return Qiling
	 */
	Qiling selectById(String id);

	/**
	 * 通过装备ID查询器灵类型信息
	 * @param equipmentId 装备ID
	 * @return Imager
	 */
	Imager selectImage(String equipmentId);

	/**
	 * 通过装备ID查询器灵
	 * @param equipmentId 装备ID
	 * @return Qiling
	 */
	Qiling selectByEquipmentId(String equipmentId);

	/**
	 * 分页查询器灵列表
	 * @param pager 分页参数
	 * @return Page<Qiling>
	 */
	Page<Qiling> selectByPage(Pager<Qiling> pager);

	/**
	 * 查询器灵列表
	 * @param roleId 角色ID
	 * @param equipmentId 装备类型ID
	 * @return List<Qiling>
	 */
	List<Qiling> selectList(String roleId, Integer equipmentId);
}